home *** CD-ROM | disk | FTP | other *** search
/ MACD 5 / MACD 5.bin / internet / irc_i_dodatki / eggdrop / eggdrop11.lha / eggdrop.doc < prev    next >
Text File  |  1997-01-15  |  23KB  |  485 lines

  1. This documentation is not finished.  In fact it's barely even started.
  2. Currently completed sections are:
  3.  
  4. (1) About Eggdrop
  5. (2) Starting Out
  6. (3) User Records
  7. (4) Access Levels?  No, Flags
  8. (5) The Party Line
  9. (6) Botnet
  10. (7) Userfile Sharing
  11. (8) Bans and How They Work
  12.  
  13. Appendices:
  14. (Y) What Are Runts?
  15. (Z) Weird Messges That Get Logged
  16.  
  17.  
  18. If you have questions or comments about this file, please send me email
  19. at <robey@netcom.com>.  Thanks.
  20.  
  21.  
  22.  
  23. (1) ABOUT EGGDROP
  24.  
  25.     Eggdrop was created around December 1993 to help stop the incessant
  26.     wars on #gayteen.  It spawned from another bot I had been writing
  27.     at the time called "Unrest".  The purpose of Unrest was to answer
  28.     help requests from other bots (the equivalent of eggdrop's current
  29.     helpbot option).  The first public release was (I think) v0.6, and
  30.     it's grown a lot since then.
  31.  
  32.     To use eggdrop, you need:
  33.     * some sort of Unix account -- it does not compile for Windows or
  34.       Mac machines, nor will it probably ever compile there
  35.     * pretty good knowledge of IRC and Unix, including how to compile
  36.       programs and what DCC chat is, at absolute minimum
  37.     * about 500k of disk space, or more, depending on your system (on
  38.       Linux, the executable takes up about 400k currently -- it will
  39.       be a lot larger on a RISC system)
  40.     * the Tcl libraries -- if you don't have them (and most systems
  41.       should), check the README file on info about how to install it
  42.       yourself (you don't need to be root)
  43.  
  44.     Before starting, ask yourself if you really need a bot.  Most IRC
  45.     servers allow only a handful of bots -- some forbid them outright.
  46.     The reason?  Too many people run bots as "toys" or as a means of
  47.     destruction.  If you want to use eggdrop for destructive purposes,
  48.     go ahead and erase this directory now.  It's almost impossible to
  49.     do what you want with this bot.
  50.  
  51.     You should try to find at least one server that will allow you to
  52.     run a bot.  If you use an ISP (Internet Service Provider) that runs
  53.     its own IRC server, check to make sure that bots are okay.  If you're
  54.     going to use a server somewhere else, read the MOTD (message of the
  55.     day) and find out what their bot policy is.  Following the rules will
  56.     go a long way toward making your bot accepted.
  57.  
  58.     Generally speaking, you only need a bot on EFnet if your channel has
  59.     a constant supply of users (24 hours a day) and no bot.  If your
  60.     channel already has a couple of bots on it, it probably doesn't need
  61.     any more.  More bots don't do any more good, and waste bandwidth.
  62.     On the Undernet you will probably never need more than one bot per
  63.     channel.  Also note that it's generally not acceptable to use a bot
  64.     to "keep a channel open" when it's not in use.  However, policies
  65.     differ from net to net and server to server so check around before
  66.     starting.
  67.  
  68.     Bots CANNOT provide absolute protection.  Nothing can.  Eggdrop will
  69.     try its hardest but there are no guarantees.
  70.  
  71.  
  72. (2) STARTING OUT
  73.  
  74.     Obviously the first thing you want to do is compile the bot.  The
  75.     README file tells you what to do and answers some frequenty-asked
  76.     questions about compiling.  If you're in a rush and you know what
  77.     you're doing, you don't have to read this at all -- the README file
  78.     tells you how to quickly compile and start up the bot.
  79.  
  80.     If you've read this far, then, I'll assume you have successfully
  81.     compiled eggdrop and edited the config file.
  82.  
  83.     First of all, eggdrop has some command-line options -- not many,
  84.     because most things should be defined through the config file.
  85.     However sometimes you may want to start up the bot in a different
  86.     mode, and the command-line options let you do that.  Basically,
  87.     the command line for eggdrop is:
  88.  
  89.     % eggdrop <options> <config-file>
  90.  
  91.     The options available are:
  92.  
  93.     -n   Don't background.  Normally eggdrop will move itself into the
  94.          background when you start it up, meaning you'll get another
  95.          shell prompt and you can do other things while the bot is going.
  96.          With -n, you won't return to the shell prompt until the bot
  97.          exits (which won't normally happen until it's killed).  By
  98.          default, -n will send all log entries to the console.
  99.  
  100.     -nt  Don't background, use terminal.  This is just like -n, except
  101.          that instead of seeing log entries, your console will simulate
  102.          a DCC chat with the bot.
  103.  
  104.     -nc  Don't background, show channel info.  This is just like -n,
  105.          except that instead of seeing log entries, every 10 seconds
  106.          your screen will clear and you will see the current channel
  107.          status, sort of like "top".
  108.  
  109.     -m   Create userfile.  If you don't have a userfile, this will make
  110.          eggdrop create one, and give master/owner status to the first
  111.          person that introduces himself or herself to it.  You'll need
  112.          to do this when you first set up your bot, and never again.
  113.  
  114.     Most people never use any of the options except -m, and you only
  115.     need to use that once.
  116.  
  117.     It's advisable to run your bot from its own directory.  That way
  118.     upgrading to a new version is somewhat painless.  You can put your
  119.     config file and user file in that directory, and then when you
  120.     compile a new version of eggdrop, you just have to do:
  121.        putegg <directory>
  122.     and it will copy eggdrop, weed, and optionally the help files.
  123.  
  124.     The config file that comes with eggdrop is called "lamestbot" (if you
  125.     compiled with Tcl).  You need to edit that file and change almost
  126.     everything.  It specifies the bot's nickname, server list, and pretty
  127.     much everything else about how your bot will work.  You should also
  128.     rename it from "lamestbot" to something resembling your bot's name,
  129.     for convenience.  I call mine "snow" since my bot is "Snowbot".
  130.  
  131.     You can execute the script to start the bot.  For example, I use:
  132.        chmod u+x snow
  133.     to make the "snow" script executable.  Then I edited the first line
  134.     of the script to say:
  135.        #!./eggdrop
  136.     which tells the operating system which program to run when executing
  137.     this script.  (Obviously, it needs to run eggdrop.)  If you're too
  138.     lazy to do this, or just don't feel like it, you can still start up
  139.     your bot this way:
  140.        eggdrop <options> <config-file>
  141.     For example:
  142.        eggdrop -nt snow
  143.  
  144.     After you've edited your config file and set the directories up the
  145.     way you want them, start the bot with the -m option.  That will make
  146.     it create a user file.  As soon as you've started up the bot, you
  147.     need to go to IRC and introduce yourself to the bot.  Typically this
  148.     is done by sending it the /msg "hello", although many people change
  149.     that greeting to something else (read the config file for more info
  150.     about that).
  151.  
  152.     When started with the -m option, the first person to introduce
  153.     themselves to the bot will become the master/owner.  You want to
  154.     be that person.  Once you are recognized as the owner, you have
  155.     full access to the commands and abilities of the bot.
  156.  
  157.  
  158. (3) USER RECORDS
  159.  
  160.     People on irc are recognized by the bot according to their user@host.
  161.     That is, if I am on irc as:
  162.        *** Robey is robey@hubcap.clemson.edu (i hate milk)
  163.     then eggdrop will identify me according to "robey@hubcap.clemson.edu"
  164.     and not by my nickname.  I can change nicknames at will and it won't
  165.     forget me.
  166.  
  167.     For convenience, it's useful to have a "handle" which always identifies
  168.     the same person.  Usually the "handle" is just whatever nickname some-
  169.     one was using when the bot first learned them.  The nickname you had
  170.     when you first said "hello" to eggdrop is the handle it will know you
  171.     by, regardless of whatever nickname you may be using at a given time.
  172.  
  173.     Because of this, only one person can have a given handle on your bot.
  174.     Masters can change it, and anyone with party-line access can change
  175.     their own handle, but it's intended to be something stable -- unlike
  176.     nicknames on irc which are about as stable as jello.
  177.  
  178.     Eggdrop likes to store a lot of information about each user.  The
  179.     most important thing stored is the list of hostmasks that a user is
  180.     recognized by.  You can add a new hostmask with the /msg "ident"
  181.     command.  Masters can add and remove hostmasks with the party-line
  182.     commands ".adduser", ".+host", and ".-host".
  183.  
  184.     Other things that are stored include the user's flags (see below),
  185.     the last time he/she was on any channel, an optional comment, an
  186.     email address, their current directory in the file area, an info
  187.     line which can be displayed when they join a channel, and possibly
  188.     even some other things that Tcl scripts store.
  189.  
  190.  
  191. (4) ACCESS LEVELS?  NO, FLAGS
  192.  
  193.     Eggdrop does not have access levels like some bots.  There are no
  194.     meaningless numbers or titles.  Instead, each user has "flags" that
  195.     entitle them to certain priveledges.  Think of a flag as a badge.
  196.     Any user can have any number of flags -- you can have no flags, or
  197.     you can have all of them.  Some flags are good, some are bad.  Each
  198.     flag is identified by a letter.  The standard flags are:
  199.  
  200.     o  (op)      someone who can ask for channel op (+o) status on the
  201.                  channel at will
  202.  
  203.     d  (deop)    someone who is not permitted to ever gain channel op
  204.                  status
  205.  
  206.     k  (kick)    someone who should be kicked if they ever attempt to
  207.                  join the channel
  208.  
  209.     f  (friend)  if revenge mode is on, the bot won't take revenge on
  210.                  someone with this flag
  211.  
  212.     m  (master)  someone who has access to almost every feature of the
  213.                  bot
  214.  
  215.     n  (owner)   someone who has absolute control -- you generally only
  216.                  want one or two people to have this flag
  217.  
  218.     x  (xfer)    someone who has access to the file transfer area of the
  219.                  bot (if it exists) and can send and receive files to/from
  220.                  the bot
  221.  
  222.     j  (janitor) someone who can perform maintanence in the file area of
  223.                  the bot (if it exists) -- like a "master" of the file
  224.                  area
  225.  
  226.     c  (common)  marks a user who is really just a public irc site from
  227.                  which any number of people can use irc, making the
  228.                  user@host information useless
  229.  
  230.     p  (party)   someone who has access to the party line
  231.  
  232.     b  (bot)     marks a user that is really a bot
  233.  
  234.     Also, there are 10 user-defined flags numbered 0-9.  They may be
  235.     "aliased" into letters of the alphabet for convenience, but they're
  236.     also always recognized by their number.  Bots can have additional
  237.     flags which are explained later on.
  238.  
  239.  
  240. (5) THE PARTY LINE
  241.  
  242.     The most important way you will communicate with your bot is through
  243.     the party line.  The party line is accessable via DCC chat or telnet.
  244.     It's pretty much just a miniature lagless irc (see "Botnet" below),
  245.     but it also consists of a console through which you can watch channel
  246.     activity and give commands.
  247.  
  248.     To enter the party line, just offer a DCC chat to your bot.  It should
  249.     ask for your password if you've set one.  If you haven't set one, be
  250.     sure to do so, so that you can use the /msg "ident" command and other
  251.     goodies that require some sort of security.
  252.  
  253.     The party line is actually split up into 100,000 "channels".  The
  254.     console is available from each channel, but you can only talk to
  255.     people who are on your current channel (just like irc).  Channel 0
  256.     is the main party line, while others are typically reserved for private
  257.     conversations.
  258.  
  259.     Commands for the console start with a dot (.), similar to the slash (/)
  260.     used for irc.  At any time you can type ".help" to get a list of the
  261.     possible commands.  To find out what a command does, use ".help
  262.     <command>" -- for example, ".help channel".  This documentation won't
  263.     list every command and what it does, because the online help files are
  264.     sufficient, and it's a lot more fun to explore on your own.
  265.  
  266.     When you're on the party line, anything you type that doesn't start
  267.     with a dot is considered to be broadcast to everyone else, just like
  268.     talking on a channel.  You can change channels with the ".chat"
  269.     command or even leave all channels with ".chat off".
  270.  
  271.  
  272. (6) BOTNET
  273.  
  274.     People starting up an eggdrop bot for the first time are usually confused
  275.     about the "botnet" support -- ie, the ability to link two or more bots
  276.     together and have them merge party lines, and form a sort of miniature
  277.     irc.
  278.  
  279.     In order to link to other bots, your bot needs to have a telnet port
  280.     defined in the config file.  The default is usually something like 2222
  281.     or 3333, but it's wise to choose something else, especially if a lot of
  282.     other people are using the same machine.  If other eggdrop bots are
  283.     running from that machine, try to pick telnet ports at least 5-10 apart.
  284.  
  285.     Sometimes you will specify a port, like 3333, but that's not available
  286.     when eggdrop starts up.  On most operating systems, it just means the
  287.     port was in use recently (probably by your bot!) and it hasn't had time
  288.     to reset it yet.  So eggdrop will try 3334, and maybe even 3335, until
  289.     it gets one.  Other bots are aware of this, and when they try to connect,
  290.     if the specified port (3333 in this example) doesn't work, they'll try
  291.     the next few before giving up.  If you have one bot on 3333, and another
  292.     on 3334, they will always be bumping into each other, and other bots
  293.     will get confused.  That's bad.
  294.  
  295.     When you first connect two bots together, you need to tell each bot about
  296.     the other one.  To do this, use the "+bot" command.  You need to know:
  297.  
  298.     1) the nickname of the other bot, like 'Lamestbot'
  299.     2) the hostname, like 'maverick.math.uic.edu'
  300.     3) the telnet port it's using, like 2222 or 3454
  301.  
  302.     The format of the '+bot' command is:
  303.        .+bot <nickname> <hostname>:<port>
  304.  
  305.     This creates a "bot record" for the bot, in your userfile.  It's kind of
  306.     like a user record, but a little different.  For example, Lamestbot,
  307.     running from connected.com on port 3454, would be:
  308.        .+bot Lamestbot connected.com:3454
  309.  
  310.     Now to connect the bots, one of you (but not both!) needs to type:
  311.        .link <botname>
  312.  
  313.     The first time two bots connect, they set a password for each other, so
  314.     that after that, nobody can "fake" a connection between the two.  You
  315.     can reset that password later with the command:
  316.        .chpass <botname>
  317.  
  318.     The bot record is like a user record except for two things:
  319.     1) If you share userfiles with another bot (see below), only user records
  320.        are shared.  The bot records will stay on this bot only.
  321.     2) There are special flags that can be set for bots, which can't be set
  322.        for users.
  323.  
  324.     The special flags you can set for bots are:
  325.  
  326.     h  (hub)        Your bot will try about once a minute to link to a hub
  327.                     bot, until it succeeds.  Once it's linked to one hub,
  328.                     it will no longer try to connect to others.
  329.  
  330.     a  (alternate)  If no hub bots can be linked, your bot will try to link
  331.                     to one of these instead.  Once one alternate bot is
  332.                     linked, it won't try to connect any others -- although
  333.                     it will still try to link to hub bots.  If a hub bot
  334.                     connects later, any alternate bot could be dropped.
  335.  
  336.     s  (share)      This means that it's okay for your bot to share users
  337.                     with this bot.  There's a full explanation of this below,
  338.                     in the section called "Userfile Sharing".
  339.  
  340.     l  (leaf)       If a bot is marked as a leaf, that means you don't want
  341.                     it to link any other bots behind it.  In other words, it
  342.                     can only be connected to the botnet in one place, and no
  343.                     other bots may be connected through it.
  344.  
  345.     r  (reject)     Any bot that has this flag will not be permitted on the
  346.                     botnet at all, no matter where it connects.  This is
  347.                     equivalent to irc's "Q-line".
  348.  
  349.     These flags can all be changed by the '.chattr' command just like for
  350.     users.  For example:
  351.        .chattr Valis +ah
  352.  
  353.     There are several chains of connected bots out there.  See the 'nets'
  354.     file for a list of the ones I've heard of...  If the flags above seem
  355.     confusing, don't worry.  Usually the only one you need to worry about
  356.     is the +h flag.  And most botnets have a policy about what flags you 
  357.     should set when hooking in, and they'll tell you what to set.
  358.  
  359.  
  360. (7) USERFILE SHARING
  361.  
  362.     One of the more interesting things you can do when you link two bots,
  363.     is to make them share userfiles.  BE CAREFUL before you do this, though!
  364.     When you link, one bot is going to lose its userfile!  (It will be
  365.     overwritten by the other bot's userfile.)
  366.  
  367.     To do userfile sharing, you have to make sure the 'share-users' variable
  368.     is set to 1.  Otherwise, your bot will automatically reject all userfile
  369.     share attempts by other bots.  (It's a safety feature.)
  370.  
  371.     Next, each bot that wants to share needs to have the +s flag.  Use
  372.     ".chattr" like above.  For example, if your bot "Lamestbot" wants to
  373.     share userfiles with "Patsy", then it needs to have +s on Patsy.
  374.     Likewise, Patsy needs to have the +s flag for Lamestbot.  If both bots
  375.     don't have each other listed with the +s flag, they won't share.
  376.  
  377.     The last thing you need to set is the passive flag.  This determines
  378.     which bot will be downloading the userfile (ie, which bot will have
  379.     its userfile replaced).  If 'passive' is set to 1, your bot is PASSIVE.
  380.     Otherwise, your bot is ACTIVE.  In general, a PASSIVE bot will download
  381.     its userfile from an ACTIVE bot.
  382.  
  383.     There are three possible ways for the bots to connect:
  384.  
  385.     (1) ACTIVE links to ACTIVE
  386.         Since they're both active, neither bot will give control, so the
  387.         userfile won't be downloaded and they won't share.
  388.  
  389.     (2) ACTIVE links to PASSIVE  -or-  PASSIVE links to ACTIVE
  390.         The ACTIVE bot will send its userfile to the PASSIVE one.
  391.  
  392.     (3) PASSIVE links to PASSIVE
  393.         The bot which is doing the linking (the one that initiates the
  394.         connection) will be the one to download the userfile.  The rationale
  395.         behind this is that two PASSIVE bots are considered to be on the
  396.         same level.  Since bots don't accept connections for the first
  397.         minute after they restart, it's pretty likely that the one init-
  398.         iating the connection has just started up after being down for a
  399.         while, so the one that's been around all this time will be up-to-
  400.         date, but the one linking will not.  Therefore the one linking will
  401.         download the userfile.
  402.  
  403.     When two sharing bots first connect, they will transfer the userfile.
  404.     After that, when something in the user records changes, the info will
  405.     be passed to the other share bot(s) so that as long as they are linked,
  406.     they will stay in sync.
  407.  
  408.     If two sharing bots get disconnected, they will start up resync buffers
  409.     for each other.  If they get reconnected within 15 minutes, they can
  410.     resync from the buffers and not have to re-download the userfile.
  411.  
  412.     If you are only linking two bots together with shared userfiles, having
  413.     them both PASSIVE is okay (and probably best for most people).  But if
  414.     you want 3 or more bots to share userfiles with each other, it's
  415.     probably best to designate one as the "hub" and set it ACTIVE.  Then
  416.     have the other bots link to the hub as PASSIVE.
  417.  
  418.     You can mark a bot both +s and +a (share user files, but only link
  419.     as an alternate).  This is very odd and should probably only be used
  420.     as a backup when you have a lot of bots sharing to one central hub.
  421.     Only people who really know what they're doing should try marking a
  422.     bot +s and +a.
  423.  
  424.  
  425. (8) BANS AND HOW THEY WORK
  426.  
  427.     I assume that you know how bans work on IRC.  Eggdrop handles them
  428.     in various ways, and this chapter is intended to help clarify how
  429.     bans are treated within the bot.  There are three types of bans:
  430.  
  431.     * global bans
  432.       These bans will be active on every channel the bot monitors.  Some
  433.       will "expire" after a while (be removed automatically).  Others
  434.       are considered "permanent" and can only be removed by a master.
  435.  
  436.     * channel-specific bans
  437.       These bans are active only on one channel, and are almost always
  438.       temporary bans that expire after an hour or so (depending on how
  439.       long you've specified in the config file).  Usually they're created
  440.       by the "revenge" mechanism (if active), or by a Tcl script of some
  441.       sort.
  442.  
  443.     * non-bot bans
  444.       These are bans that were not placed by the bot, and that the bot
  445.       doesn't care about.  They can be removed by anyone on the channel.
  446.       The other two types of bans are generally protected by the bot,
  447.       and have to be removed via the bot.
  448.  
  449.     The party-line command '.+ban' adds a global ban.  '.kickban' will
  450.     add a channel-specific ban.  '.bans' will list them all, according
  451.     to their category.  Be sure to check out the help pages for those
  452.     commands for more info.
  453.  
  454.  
  455. (Y) WHAT ARE RUNTS?
  456.  
  457.     Runts are an American candy, part of the Willy Wonka line.  They
  458.     are little pebble-sized hard nuggets, brightly colored, and shaped
  459.     like fruit:  cherries, bananas, oranges, and limes.  They seem to
  460.     be made almost exclusively from sugar, and are very addictive.
  461.  
  462.  
  463. (Z) WEIRD MESSAGES THAT GET LOGGED
  464.  
  465.     (!) timer drift -- spun N minutes
  466.  
  467.     This means your bot was swapped out of memory for a while, or that
  468.     for some reason the computer stopped letting the bot run.  Once a minute,
  469.     eggdrop does a few maintanance things, including counting down any Tcl
  470.     timers you have going.  If for some reason, several minutes pass without
  471.     eggdrop getting to do this, it logs this message to let you know what
  472.     happened.  It's generally a bad thing, because it means that the system
  473.     your bot is on is very busy, and the bot can hardly keep track of the
  474.     channel very well when it gets swapped out for minutes at a time.
  475.  
  476.     (!) killmember(Nickname) -> nonexistant
  477.  
  478.     We have yet to track this down.  It's a mildly bad thing, though.
  479.     It means the bot just got informed by the server that someone left the
  480.     channel -- but the bot has no record of that person ever being ON the
  481.     channel.
  482.  
  483.  
  484. (10sep94, 30may95, 10nov95, 30nov95)
  485.